package top.dingwen.io.treasure.api.event;

import top.dingwen.io.treasure.api.base.constant.ApiConstant;

/**
 * 事件服务接口
 *
 * @author dingwen
 * @since 2024/3/26 17:11
 */
@SuppressWarnings(ApiConstant.ALL)
public interface IEvent {

    /**
     * 存储一个事件
     *
     * @param request 请求事件对象
     * @return boolean  执行结果
     */
    default boolean saveEvent(BaseEventRequest request) {
        return false;
    }

    /**
     * 是否需要执行: 若已经执行成功则取消执行
     *
     * @param id 事件唯一编号
     * @return boolean  执行结果
     */
    default boolean isNeedExecute(Long id) {
        return false;
    }

    /**
     * 成功: 修改事件状态
     *
     * @param id 唯一编号
     * @return boolean  执行结果
     */
    default boolean succeed(Long id) {
        return false;
    }
}
